package com.dushuren.project.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dushuren.project.model.dto.UserGetRequest;
import com.dushuren.project.model.dto.UserRenewRequest;
import com.dushuren.project.model.entity.User;
import com.dushuren.project.model.vo.UserVo;

import javax.servlet.http.HttpServletRequest;

/**
* @author dushuren
* @description 针对表【user(用户)】的数据库操作Service
* @createDate 2022-10-12 17:02:28
*/
public interface UserService extends IService<User> {

  /***
   *用户注册
   *
   * @param userAccount 用户账号
   * @param userPassword 用户密码
   * @param checkPassword 校验密码
   * @return  新用户id
   */
  long userRegister(String userAccount, String userPassword, String checkPassword);

  /***
   * 用户登录
   *
   * @param userAccount 用户账号
   * @param userPassword 用户密码
   * @param request 用户登入态
   * @return 用户脱敏后的基础信息
   */
  UserVo userLogin(String userAccount, String userPassword, HttpServletRequest request);

  /***
   * 用户注销
   *
   * @param request 登录态
   * @return 注销是成功
   */
  boolean userLogout(HttpServletRequest request);

  /***
   *  获取当前登录用户
   * @param request 登录态
   * @return User
   */
  User getLoginUser(HttpServletRequest request);

  /***
   * 用户信息进行脱敏
   * @param user 用户信息
   * @return userVo
   */
  UserVo getSftUser(User user);

  /***
   * 查询个人用户信息
   * @param userGetId
   * @return
   */
  User getUser(UserGetRequest userGetId);


  /***
   * 是否为管理员
   * @param request
   */
  void isAdministrators(HttpServletRequest request);

  /***
   * request 是否存在
   * @param request
   * @return
   */
  UserVo getIsServletRequest(HttpServletRequest request);

  /***
   * 更新（修改）数据 更新成功 0  更新内容未变 1
   * @param renewRequest
   * @param userVo
   * @return
   */
  Long renewUser(UserRenewRequest renewRequest, UserVo userVo);
}
